package org.soderiakelvy.model.services.testCase;

import static org.junit.Assert.*;

import java.util.List;

import junit.framework.Assert;

import org.junit.BeforeClass;
import org.junit.Test;
import org.soderiakelvy.model.domain.ProductoVO;
import org.soderiakelvy.model.domain.SujetoVO;
import org.soderiakelvy.model.domain.TipoProductoVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.SujetoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.service.imp.SujetoServicioImpl;
import org.soderiakelvy.model.util.ConstantModel;

public class TestProducto {
	//@BeforeClass

	
	@Test
	public void testProductoCrud(){
		
		ProductoServicio ps = new ProductoServicioImp();
		ProductoVO pVO = new ProductoVO();
		TipoProductoVO tpVO = new TipoProductoVO();
		
		tpVO = ps.getTipoProductoById(1);
		
		pVO.setNombre("testNombre");
		pVO.setDescripcion("----");
		pVO.setPrecio((float)20);
		pVO.setTipoProducto(tpVO);
		
		
		//----------- TEST  ALTA DE UN PRODUCTO POR SU ID ------------------
		Assert.assertEquals(ConstantModel.SUCCESS,ps.insertProductoVO(pVO));
		System.out.println("TEST ALTA OK");
		//-----------------------------------------------------------------------------
		
		//----------- TEST UPDATE PRODUCTO -----------------------------
		pVO.setDescripcion("testDescripcion");
		Assert.assertEquals(ConstantModel.SUCCESS,ps.updateProductoVO(pVO));
		System.out.println("TEST UPDATE OK");
		//-----------------------------------------------------------------------------
		
		//----------- TEST OBTENER UN PRODUCTO POR SU ID ------------------
		Assert.assertNotNull(ps.getProductoById( pVO.getProductoId()  ));
		System.out.println("Producto Obtenido "+ ps.getProductoById(2).getNombre());
		
		System.out.println("TEST OBTENER UN  PRODUCTO OK");
		//-----------------------------------------------------------------------------
		
		//----------- TEST ELIMINACION DE UN PRODUCTO ------------------------
				Assert.assertEquals(ConstantModel.SUCCESS,ps.deleteProductoVO(pVO));
				System.out.println("TEST ELIMINAR OK");
		//-----------------------------------------------------------------------------
		
//		//----------- TEST  GET ALL PRODUCTOS con PRECIO-----------------------------
//		System.out.println("T E S T");
//		List<ProductoVO> productos1 = ps.getProductosConPrecio(1);
//		for(ProductoVO p : productos1){
//			System.out.println(p.toString());
//		}
//		System.out.println("Lista de Productos con Precio OK");
//		//---------------------------------------------------------------------------
//		
//		
//		//----------- TEST  GET PRODUCTOS POR TIPO ----------------------------------
//		List<ProductoVO> productos = ps.getProductosPorTipo(tpVO);
//		Assert.assertEquals(productos.size(), 2);
//		for(ProductoVO p : productos){
//			System.out.println(p.getNombre());
//		}
//		//---------------------------------------------------------------------------

		

		//----------- TEST  GETALL PRODUCTO ------------------------
		List<ProductoVO> productos2 = ps.getProductos();
		Assert.assertEquals(productos2.size(), 2);
		for(ProductoVO p : productos2){
			System.out.println(p.toString());
		}
		
		System.out.println("TEST GETALL OK");
		//-----------------------------------------------------------------------------
	}

}
